package jy.game.components.wuxue;


public class SkillCoverTypeHelper {
    // Token: 0x0400024A RID: 586
    private static String[]       coverTypeInfoMap = {
        "点攻击",
        "十字攻击",
        "米字攻击",
        "直线攻击",
        "面攻击",
        "扇形攻击",
        "环状攻击",
        "对角线攻击",
        "身前攻击"
    };
    // Token: 0x04000249 RID: 585
    private        SkillCoverType _type;
    // Token: 0x0400024B RID: 587
    private        double[]       dSizeMap         = {
        0.12f,
        0.15f,
        0.1f,
        0.2f,
        0.3f,
        0.23f,
        0.2f,
        0.3f,
        0f
    };
    // Token: 0x0400024C RID: 588
    private        int[]          dBaseCaseSizeMap = {
        1,
        0,
        0,
        1,
        1,
        1,
        0,
        0,
        1
    };

    /**
     * <pre>
     *  double[] array = new double[9];
     *  array[0] = 0.25f;
     *  array[3] = 0.2f;
     *  this.dCastSizeMap = array;
     *  </pre>
     */
    private double[] dCastSizeMap = {
        0.25f,
        0f,
        0f,
        0.2f,
        0f,
        0f,
        0f,
        0f,
        0f,
    };

    // Token: 0x06000374 RID: 884 RVA: 0x00026E8C File Offset: 0x0002508C

    public SkillCoverTypeHelper(SkillCoverType type) {

        // base.ctor();
        this._type = type;
    }

    // Token: 0x06000377 RID: 887 RVA: 0x00003E63 File Offset: 0x00002063
    public static String GetSkillTypeChinese(int type) {
        return SkillCoverTypeHelper.coverTypeInfoMap[type];
    }

    // Token: 0x170000A5 RID: 165
    // (get) Token: 0x06000376 RID: 886 RVA: 0x00003E5B File Offset: 0x0000205B
    private int get_typeCode() {
        return (int) this._type.value();
    }

    // Token: 0x0600037D RID: 893 RVA: 0x00027070 File Offset: 0x00025270
//    public List<LocationBlock> GetSkillCoverBlocks(int x, int y, int spx, int spy, int coversize) {
//        int                 max_X = BattleField.MAX_X;
//        int                 max_Y = BattleField.MAX_Y;
//        List<LocationBlock> list  = new ArrayList<LocationBlock>();
//        switch (this._type) {
//            case NORMAL:
//                list.add(new LocationBlock {
//                x = x,
//                    y = y
//            });
//            break;
//            case CROSS:
//                list.add(new LocationBlock {
//                x = x,
//                    y = y
//            });
//            for (int i = 1; i <= coversize; i++) {
//                list.add(new LocationBlock {
//                    x = x + i,
//                        y = y
//                });
//                list.add(new LocationBlock {
//                    x = x + i * -1,
//                        y = y
//                });
//                list.add(new LocationBlock {
//                    x = x,
//                        y = y + i
//                });
//                list.add(new LocationBlock {
//                    x = x,
//                        y = y + i * -1
//                });
//            }
//            break;
//            case STAR:
//                list.add(new LocationBlock {
//                x = x,
//                    y = y
//            });
//            for (int j = 1; j <= coversize; j++) {
//                list.add(new LocationBlock {
//                    x = x + j,
//                        y = y
//                });
//                list.add(new LocationBlock {
//                    x = x + j * -1,
//                        y = y
//                });
//                list.add(new LocationBlock {
//                    x = x,
//                        y = y + j
//                });
//                list.add(new LocationBlock {
//                    x = x,
//                        y = y + j * -1
//                });
//                list.add(new LocationBlock {
//                    x = x + j,
//                        y = y + j
//                });
//                list.add(new LocationBlock {
//                    x = x + j * -1,
//                        y = y + j
//                });
//                list.add(new LocationBlock {
//                    x = x + j,
//                        y = y + j * -1
//                });
//                list.add(new LocationBlock {
//                    x = x + j * -1,
//                        y = y + j * -1
//                });
//            }
//            break;
//            case LINE: {
//                list.add(new LocationBlock {
//                    x = x,
//                        y = y
//                });
//                int num  = 0;
//                int num2 = 0;
//                if (x < spx) {
//                    num = -1;
//                }
//                if (x > spx) {
//                    num = 1;
//                }
//                if (y < spy) {
//                    num2 = -1;
//                }
//                if (y > spy) {
//                    num2 = 1;
//                }
//                for (int k = 1; k <= coversize; k++) {
//                    list.add(new LocationBlock {
//                        x = x + num * k,
//                            y = y + num2 * k
//                    });
//                }
//                break;
//            }
//            case FACE:
//                for (int l = x - coversize / 2; l < x + coversize / 2 + 1; l++) {
//                    if (l >= 0 && l < max_X) {
//                        for (int m = y - coversize / 2; m < y + coversize / 2 + 1; m++) {
//                            if (m >= 0 && m < max_Y) {
//                                list.add(new LocationBlock {
//                                    x = l,
//                                        y = m
//                                });
//                            }
//                        }
//                    }
//                }
//                return list;
//            case FAN: {
//                list.add(new LocationBlock {
//                    x = x,
//                        y = y
//                });
//                int num3 = 0;
//                int num4 = 0;
//                if (x < spx) {
//                    num3 = -1;
//                }
//                if (x > spx) {
//                    num3 = 1;
//                }
//                if (y < spy) {
//                    num4 = -1;
//                }
//                if (y > spy) {
//                    num4 = 1;
//                }
//                if (num3 + num4 != 0) {
//                    for (int n = 1; n <= coversize; n++) {
//                        list.add(new LocationBlock {
//                            x = x + num3 * n,
//                                y = y + num4 * n
//                        });
//                        for (int num5 = 1; num5 <= n; num5++) {
//                            if (num3 == 0) {
//                                list.add(new LocationBlock {
//                                    x = x + num3 * n + num5,
//                                        y = y + num4 * n
//                                });
//                                list.add(new LocationBlock {
//                                    x = x + num3 * n - num5,
//                                        y = y + num4 * n
//                                });
//                            } else {
//                                list.add(new LocationBlock {
//                                    x = x + num3 * n,
//                                        y = y + num4 * n + num5
//                                });
//                                list.add(new LocationBlock {
//                                    x = x + num3 * n,
//                                        y = y + num4 * n - num5
//                                });
//                            }
//                        }
//                    }
//                }
//                break;
//            }
//            case RING:
//                for (int num6 = -coversize; num6 <= coversize; num6++) {
//                    for (int num7 = -coversize; num7 <= coversize; num7++) {
//                        if (Math.Abs(num6) + Math.Abs(num7) == coversize) {
//                            list.add(new LocationBlock {
//                                x = x + num6,
//                                    y = y + num7
//                            });
//                        }
//                    }
//                }
//                break;
//            case x:
//                for (int num8 = 0; num8 < coversize; num8++) {
//                    list.add(new LocationBlock {
//                        x = x + num8,
//                            y = y + num8
//                    });
//                    list.add(new LocationBlock {
//                        x = x + num8,
//                            y = y - num8
//                    });
//                    list.add(new LocationBlock {
//                        x = x - num8,
//                            y = y + num8
//                    });
//                    list.add(new LocationBlock {
//                        x = x - num8,
//                            y = y - num8
//                    });
//                }
//                break;
//            case FRONT:
//                list.add(new LocationBlock(x, y));
//                if (x == spx) {
//                    list.add(new LocationBlock(x - 1, y));
//                    list.add(new LocationBlock(x + 1, y));
//                }
//                if (y == spy) {
//                    list.add(new LocationBlock(x, y - 1));
//                    list.add(new LocationBlock(x, y + 1));
//                }
//                break;
//        }
//        if (list.Count > 1) {
//            List<LocationBlock> list2 = new ArrayList<LocationBlock>();
//            foreach(LocationBlock locationBlock in list) {
//                if (locationBlock.x >= 0 && locationBlock.x < max_X && locationBlock.y >= 0 && locationBlock.y < max_Y) {
//                    list2.add(locationBlock);
//                }
//            }
//            return list2;
//        }
//        return list;
//    }

    // Token: 0x170000A6 RID: 166
    // (get) Token: 0x06000378 RID: 888 RVA: 0x00003E6C File Offset: 0x0000206C
    public double getdSize() {
        return this.dSizeMap[this.get_typeCode()];
    }

    // Token: 0x170000A7 RID: 167
    // (get) Token: 0x06000379 RID: 889 RVA: 0x00003E7B File Offset: 0x0000207B
    public int getbaseCastSize() {
        return this.dBaseCaseSizeMap[this.get_typeCode()];
    }

    // Token: 0x170000A8 RID: 168
    // (get) Token: 0x0600037A RID: 890 RVA: 0x00003E8A File Offset: 0x0000208A
    public double getdCastSize() {
        return this.dCastSizeMap[this.get_typeCode()];
    }

    // Token: 0x170000A9 RID: 169
    // (get) Token: 0x0600037B RID: 891 RVA: 0x00003E99 File Offset: 0x00002099
    public String getCoverTypeInfo() {
        return SkillCoverTypeHelper.GetSkillTypeChinese(this.get_typeCode());
    }


    // Token: 0x0600037C RID: 892 RVA: 0x00026F58 File Offset: 0x00025158
    public int CostMp(double power, int size) {
        switch (this._type) {
            case NORMAL:
                return (int) (power * 2f * 8f);
            case CROSS:
                return (int) (power * size * 8f);
            case STAR:
                return (int) (power * size * 1.3 * 8.0);
            case LINE:
                return (int) (power * size * 0.6 * 8.0);
            case FACE:
                return (int) (power * size * 3f * 8f);
            case FAN:
                return (int) (power * size * 2.5 * 8.0);
            case FRONT:
                return (int) (power * 2f * 8f);
            default:
                return (int) (power * size * 1.5 * 8.0);
        }
    }

    // Token: 0x0600037E RID: 894 RVA: 0x000276A0 File Offset: 0x000258A0
    public int GetCoverTypePower() {
        switch (this._type) {
            case NORMAL:
            case CROSS:
            case LINE:
            case RING:
            case X:
                return 1;
            case STAR:
                return 3;
            case FACE:
                return 4;
            case FAN:
                return 2;
            default:
                return 0;
        }
    }
}